Gemini Proxy
Language to learn
Friends, which language a hobbyst like me would try seriously to learn? Like buy books and materials...
I honestly learned a lot of languages since I was a kid: Pascal first as a kid, then Assembly and C when I entered technical school at 14, then Pascal again and VBA at university, then Python... But honestly, though I have some understanding of the principles, I don't consider myself proficient in any. I had to change jobs and profession a lot of times because of money and never got the opportunity to enhance my skills in any language in special.
I am seriously confused if I should try python again, since it is easy, of come back to C or C++ (In that case, I don't have a clue which one is better in the context of a hobbyst. I don't know If i really need OOP)
Please, share your wisdom and opinions with me. I work at industry with electrical stuff and outside PLCs that I never touch, I don't see much future in learning a language anyway.
2024-12-04 · 2 years ago
26 Comments ↓
Learning the language isn't really
the difficult part about learning
Programming languages are like hammers. They might have some fine differences in how you hold them and what shape the face is, but they can mostly get you through most jobs about the same.
The important thing is to pick up the hammer and start figuring out how to use it to shape what you want.
You have the basics of the run-of-the mill languages. The rest are the same, with slightly different syntax and features. Except for:
Common Lisp.
All languages out there are a poor subset of CL.
It will change your life.
* amazing macro facilities, use lisp to manipulate code as data
* world class object system, if you want to use it
* many free and commercial implementations
* optimized code can be faster than C, perhaps
* Standardized in 1994 and unchanged since then, because it's that good
* most problems solved like 30 years ago
imho, not language but your goal / environment / framework could help with choice
Personally, switched to Rust after 15 years of different programming experience
I do not trust myself enough to use C++ or spend a time for package management there.
I always recommend it, so might as well be consistent: Dart.
Fellow hobbyist. I picked up Go the last couple of weeks and have been enjoying it. My goto is Python if I just want to crank something out.
In my STEM data-intense profession
we use Python. This is a must for a
I was C# dev for like 7 years until I appreciated how Go does things. Its just so simple compared to managing the code with classes. I love it so far. I don't think I am ever going back to C#.
I know some people swear by python, but for me, I couldn't imagine a worse abomination! The clumsy syntax, the lack of tail calls, the formatting...
Whenever something breaks my machine, inevitably it's because some python library maintainer changed the name of some variable deep inside. It's complexly unstable, with breaking changes across minor versions. Every little python app pip-sucks in megabytes of crap that makes me shudder...
I had to use it recently for the opensource FPGA toolchain, and had to jump through hoops to keep its required python version from clashing with Ubuntu's required version...
I would quit computers if I had to use python.
I wouldn't quit programming even if I had to use common lisp, but I would definitely get a lot grumpier.
If it's to get a job, there are
surveys out there showing how
To each his/ver own! For me Lisp is pure joy!
PS Lisp is not really a functional language, it is a pragmatic multi-paradigm language that easily supports functional or OO style if you so desire...
I'm yet to see a functional language that doesn't call itself "pragmatic multi-paradigm" language :)
Another language that changes the
way you think is Forth. Many of
Forth places everything under your direct control, but that also means you have to BE in control: Forth does what you tell it, so if you take a bunch of bits you've been treating as a character and suddenly treat them as a number, Forth will do that: you have to keep things straight. Also like Lisp, Forth is very interactive; both are fun and useful to interact with to figure things out.
An interesting family of
programming languages is Niklaus
Forth is incredible. In many ways it is an inversion of Lisp.
Lisp, Forth, and Smalltalk form a large triangle marking the bounds of computer languages... Almost all lie somewhere inside, leaning towards one or the other...
Lisp: code is data!
Forth: data is code!
Smalltalk: No, it's objects all the way down...
There is also PostScript, which is a programming language that I sometimes use. (It is not only for graphics or for printing, although it can be used for that too.)
PostScript is a Forth..
PostScript is not a Forth, although it is RPN, and so is Forth. PostScript is different in many significant ways.
Scheme differs from Common Lisp in extremely significant ways, yet it is a Lisp.
A concatenative language with RPN notation is a Forth in my book!
when you say hobbyist, i'm confused aobut whether you mean just programming for fun, or whether you want to learn half of computer science - if you want to have fun programming - smalltalk/squeak is visual and kinda fun - lua is another fun language, and so beautifully simple that you can build OOP on top of it if you want - if you want to learn half of computer science - I strongly suggest C because it gets you so close to the hardware, not C++ because then you'll just get distracted by all the OOP.
I didn't like the concept of Go at all until I started coding in it, its actually great and practical, and might be just what you need to have fun and learn computer science
By Forth you mean Fortran?
Well, I will do it for fun, and would be nice to be able to help any kindred projects. But I also work in the field of Instrumentation, so something like ST (Structured Text for PLC programming) would help me a bit to not rust my skills (since I am still not in a function at work where I can program the PLC itself).
No, by Forth I mean Forth.
Except that Python is a terrible language (as a language geek), the worst user experience I've encountered as a coder, and the most unstable environment where one day nothing works because some library you've never heard of changed. If they paid me to use it I'd quit.
Did I say this before? Yikes, going in circles here. Sorry.
My python experience is mixed. I've used it successfully for data processing of major datasets without much need for coding. But on the other hand, I wanted an application that was coded in python but it needed a newer minor version. So I set about installing it and when I rebooted my Linux distro: boom, no GUI. So I reverted, painstakingly finding all the damn symlinks and getting its hooks out. The solution was to upgrade to the newest release of the distro.
In summary, it took a distro upgrade to run a single application coded in a version of Python 2 minor revisions ahead. I get the criticism. I'm sure I could have avoided it but coding is neither my main job description nor a big hobby.
you're on bbs.geminispace.org/s/programming/22443